[Data Science Tool Box] 3일차 실습

Author

김보람

Published

January 4, 2024

실습26: 186 컴퓨터에서 깃+깃헙연결하기

- 186에서 깃+깃헙연결할때 어려운점.

  • 토큰을 쳐야한다는게 어려움.
  • 윈도우에서는 직접로그인으로 인증했음. 코드스페이스에서는 별도의 인증과정이 필요없었음.
  • 일반서버에서는 토큰으로 해결해야함. (다른 방법도 있는데 그냥 이게 젤 편함)

- 비밀번호 치는게 귀찮으면?

git config credential.helper store # 이걸실행하고 이후에 한번만 푸시하면 된다. 
git add .
git commit -m . 
git push 

실습27: 작업하던 블로그를 강의실 윈도우로 clone

- 아래를 실행하면 됩니당

git clone {repo-name} # 처음부터 새로만듦

실습28: 블로그 생성원리 이해하기

- 아래를 실행하고 git switch를 사용할시 무슨일이 생기는지 파악

# git add . 
# git commit -m . # 이거 2개가 깃에서의 save 라고 생각하자. 
git switch gh-pages
git switch main 

- 위의 과정을 반복해보면서 폴더를 관찰. 느낀점 서술

- git switch gh-pages한 상태에서 폴더에 존재하는 html파일들을 열어볼 것.

실습29: 블로그 깨기

- git swtich gh-pages한 상태에서 폴더에 존재하는 모든 파일을 삭제 \(\to\) 본인 홈페이지에 가보자. 홈페이지는 살아 있는가?

아직은 살아있어!

- 아래를 실행하고 본인홈페이지에 방문해보자. 홈페이지는 살아있는가?

git add . 
git commit -m .
git push

깨져있어!

quarto render 실행해 보자! —>_site에 저장이 되어있다 하네?

- 왜 죽었다고 생각하는가?

git main은 직접적인 영향을 가지는 건 아니고.. html파일을 띄어주는.. 모드를 gh-pages로 옮겨놓으면 github에 올라가고 github가 그럼 알아서 블로그에 옮겨줌

- 깃헙 특수기능 중 하나인 웹페이지 배포능력에 대하여 스스로 이해한 바를 서술해보자.

실습30: 코드를 숨기는 블로그 (야메)

- 주피터다운로드 후 블로그를 만드는 것은 포스트를 엄청 빠르게 만드는 사기적 능력임

- 내가 베낄때는 좋지만 누군가가 내 블로그를 베낀다 생각하면 기분나쁠 수 있음

- 실습29를 응용하여 코드가 없는 블로그를 만들어보자

실습31: 코드를 숨기는 블로그 (합법)

- 의문점: 그런데 작업내용을 블로그에 올릴때 꼭

git add .               # main
git commit -m .         # main
git push                # main
quarto publish --no-browser --no-prompt

순서로 업로드 해야하는가? 그냥 단순히

quarto publish --no-browser --no-prompt    # 코드는 업데이트 안됨

만 하면 안되는가? (경험상 되던데요?)

- 코드를 숨길 수 있는 블로그를 만들고 싶다면? 어떻게 하면 좋을지 생각해보자.

실습32: pull + push (잘 쓰면 편해)

- 186 컴퓨터 (혹은 본인이 주로 쓰는 서버 컴퓨터) 에서 pull

- 186 컴퓨터에서 수정 \(\to\) push

- 실습실 컴퓨터에서 다시 pull

- 실습실 컴퓨터에서 수정 \(\to\) push

- 소감:

실습33: pull + push (난 불편해)

- 186 컴퓨터 (혹은 본인이 주로 쓰는 서버 컴퓨터) 에서 pull

- 186 컴퓨터에서 수정 \(\to\) push 안함

- 실습실 컴퓨터에서 수정 \(\to\) push

- 186컴퓨터는 뭐야? \(\to\) push 시도.. \(\to\) 실패

- 해결책:

실습34: gh-pages에서 만들기 싫다면..?

- 생각해보니까 딱히 내 코드가 비밀은 아님

- 브랜치를 쓰는게 이론상 깔끔하긴 한데 막상 쓰려니까 불편함. (그 파일이 순간적으로 없어지는 거잖아요?.. 엄청 찝찝해요)

- quarto publish는 아래동작의 결합이다.

quarto render 
# html파일들이 어딘가 만들어져있음. 
git switch gh-pages
# 만들어진 html파일들이 복사됨. 
git add .
git commit -m . 
git push 
git switch main 

- 아래와 같이 수정하고 싶다면?

quarto render 
# html파일들을 docs라는 폴더에 저장
git add .
git commit -m . 
git push 

그리고 깃헙설정을 변경한다면?

- 하는방법

step1

git push origin --delete gh-pages # 로칼에서 브랜치삭제 + 원격으로 업데이트
git add .
git commit -m .
git push 

step2

_quarto.yml
project:
  type: website
  output-dir: docs # <- 이거 추가하세요
# 이 아래는 수정필요없음 

step3

이후 https://github.com/{user-name}/{repo-name}/settings/pages 로 이동하여 셋팅을 변경하면 된다.

실습35: 파이썬 버전확인하기

- 기본명령

python --version 

- 이걸 이용해서 코랩의 파이썬 버전을 확인해보자.

!python --version 

실습36: 가상환경 py310생성 + pip으로 판다스 설치하고 버전확인

- 가상환경 지우기

conda env remove -n "가상환경이름"

- 우리의 무기1: pip list

pip list 
Package    Version
---------- -------
pip        23.3.1
setuptools 68.2.2
wheel      0.41.2

- 우리의 무기2: conda list

conda list 
# packages in environment at /root/anaconda3/envs/py310:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_openmp_mutex             5.1                       1_gnu  
bzip2                     1.0.8                h7b6447c_0  
ca-certificates           2023.12.12           h06a4308_0  
ld_impl_linux-64          2.38                 h1181459_1  
libffi                    3.4.4                h6a678d5_0  
libgcc-ng                 11.2.0               h1234567_1  
libgomp                   11.2.0               h1234567_1  
libstdcxx-ng              11.2.0               h1234567_1  
libuuid                   1.41.5               h5eee18b_0  
ncurses                   6.4                  h6a678d5_0  
openssl                   3.0.12               h7f8727e_0  
pip                       23.3.1          py310h06a4308_0  
python                    3.10.13              h955ad1f_0  
readline                  8.2                  h5eee18b_0  
setuptools                68.2.2          py310h06a4308_0  
sqlite                    3.41.2               h5eee18b_0  
tk                        8.6.12               h1ccaba5_0  
tzdata                    2023c                h04d1e81_0  
wheel                     0.41.2          py310h06a4308_0  
xz                        5.4.5                h5eee18b_0  
zlib                      1.2.13               h5eee18b_0  

- 판다스의 설치

pip install pandas # 터미널에서 하는게 적성입니다. 나머지 야메에요

- pip list로 확인

Package         Version
--------------- ------------
numpy           1.26.3
pandas          2.1.4
pip             23.3.1
python-dateutil 2.8.2
pytz            2023.3.post1
setuptools      68.2.2
six             1.16.0
tzdata          2023.4
wheel           0.41.2

- conda list로 확인

# packages in environment at /root/anaconda3/envs/py310:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_openmp_mutex             5.1                       1_gnu  
bzip2                     1.0.8                h7b6447c_0  
ca-certificates           2023.12.12           h06a4308_0  
ld_impl_linux-64          2.38                 h1181459_1  
libffi                    3.4.4                h6a678d5_0  
libgcc-ng                 11.2.0               h1234567_1  
libgomp                   11.2.0               h1234567_1  
libstdcxx-ng              11.2.0               h1234567_1  
libuuid                   1.41.5               h5eee18b_0  
ncurses                   6.4                  h6a678d5_0  
numpy                     1.26.3                   pypi_0    pypi
openssl                   3.0.12               h7f8727e_0  
pandas                    2.1.4                    pypi_0    pypi
pip                       23.3.1          py310h06a4308_0  
python                    3.10.13              h955ad1f_0  
python-dateutil           2.8.2                    pypi_0    pypi
pytz                      2023.3.post1             pypi_0    pypi
readline                  8.2                  h5eee18b_0  
setuptools                68.2.2          py310h06a4308_0  
six                       1.16.0                   pypi_0    pypi
sqlite                    3.41.2               h5eee18b_0  
tk                        8.6.12               h1ccaba5_0  
tzdata                    2023.4                   pypi_0    pypi
wheel                     0.41.2          py310h06a4308_0  
xz                        5.4.5                h5eee18b_0  
zlib                      1.2.13               h5eee18b_0  

- 방법3: 파이썬에서

import pandas as pd
pd.__version__

실습37: 저의 가장 최신 흑역사 재현

- 기억하고 싶지 않았음: https://guebin.github.io/DV2023/posts/13wk-2.html

- py310 환경에서 아래의 코드를 실행한다.

df = pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df.map(lambda x: 0 if x == '-' else x)

- colab 환경의 python과 pandas 버전을 조사하고 유사환경을 만든다.

# 이렇게 하면됩니당
conda create -n co python=3.10.12
conda activate co 
pip install pandas==1.5.3

- 아래의 코드를 실행해보자.

df = pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df.map(lambda x: 0 if x == '-' else x)

- 학생들 질문: 제 컴퓨터에서는 안되는데요.. 어쩌죠?

  • 답변1: 코랩에서 하세요..

- 학생들 질문2: pip install pandas 해도 안되는데요, 어쩌죠?

  • 답변1: 코랩해서 하세요..
  • 진짜 많이 겪는 상황: 저는 꼭 제 노트북으로 해야겠습니다.. -> 아나콘다 쓰시나요? -> 쓰긴쓰는데…….. -> 환경분리해서 실습했어요? -> ????? -> 제가 볼게요.. (찾아보니까) base에 있음..
  • 답변2: 일단은 pip install pandas -U 해보세요
    뒤에 -U붙이면 삭제하고 다시 깔림

- 답변2가 적절할까?

- 가장 좋아하는 답변: 환경 새로 파세요

- 최악의 상황 (포맷으로 귀결되는 엔딩)

  1. 일단 아나콘다는 깔아놓았음.
  2. 잘 몰라서 (base) 상태에서 이것저것 깔기 시작함.
  3. 교수랑 코드 “똑.같.이.” 쳤는데 내 컴퓨터에서는 안됨.
  4. 교수가 맥이라서 그런가보다 하고 인터넷에서 해결책 찾기 시작함.
  5. 뭐 하라는 대로 해서 이제까지 해결해 왔음. (버전은 점점 엉키기 시작함)
  6. 안되는건 잘하는 선배찾아가서 물어봤는데 귀신같이 해결해줌. (하지만 버전은 점점 더 엉키고 있음)
  7. 그런데 또 문제가 생겼고 이제는 해결못하겠음.
  8. 교수한테 찾아감 -> 교수가 해준다면서 (base)에서 새로운 환경 (py310)을 만들어서 이것저것 시도해 봄.
  9. 성공하면 다행인데, 실패함1
  10. 이건 방법이 없다며 아나콘다를 지우고 재설치 시도. 그런데 윈도우에서는 아나콘다 지우는게 까다로움. (먼가 설정이 자꾸 남아있단 말이에요)
  11. 새로 계정만들어서 아나콘다 설치시도 -> 실패
  12. 교수도 사실 윈도우 잘 모른다고 하면서 회피.
  13. 포맷
  14. 다시 아나콘다 깔고 1-13을 반복함.

1 4학년쯤에는 이미 (base) 가 손쓸 수 없는 상태로 깨져있는 경우가 허다함. 공부를 열심히 한 학생일수록 그러함. 이럴경우 소생가능성이 없음

- 부작용: 아나콘다 트라우마 발생해서 “리눅스에서 쓰는 모든 명령” 을 (base) 상태에서 실행해야하는지 (py310) 상태에서 실행해야 하는지 두려워함.

- 부작용을 극복하는 방법: 서버사용하세요. 컴퓨터 망가뜨리면 찾아오세요. 모든 자료는 언제든 클론가능하게 깃헙에 저장하세요.

실습38: 여러개의 가상환경 생성

- 가능하면 프로젝트별로 환경을 분리하는게 좋다.

- 하나의 환경에 모든 패키지를 때려밖아 설치하는건 패키지 충돌나라고 기도하는 꼴이다.

실습39: 주피터랩 설정변경

- root유저의 홈에서 ls, ls -a를 쳐보자.

- 들어가서 jupyter_notebook_config.py를 열어보자.

없다면 아래를 이용하여 만들자.

jupyter notebook --generate-config

- 아래의 내용을 변경

c.ServerApp.ip = "0.0.0.0" 
c.ServerApp.port = 8888 # 8888아니구요. 본인이 쓸수 있는 포트중에서 좋아하는거 쓰세여 
c.ServerApp.allow_root = True 
c.ServerApp.allow_remote_access = True # 당장필요한건 아닌데요.. 해놓으세여 

- 이제 켜보세요..

- root유저의 홈에서 ls, ls -a(숨겨진 파일을 볼 수 있음)를 쳐보자.

image.png

- 들어가서 jupyter_notebook_config.py를 열어보자.

없다면 아래를 이용하여 만들자.

jupyter notebook --generate-config

- 아래의 내용을 변경

c.ServerApp.ip = "0.0.0.0" 
c.NotebookApp.port = 8888 # 8888아니구요. 본인이 쓸수 있는 포트중에서 좋아하는거 쓰세여 
c.ServerApp.allow_root = True 
c.ServerApp.allow_remote_access = True # 당장필요한건 아닌데요.. 해놓으세여 

- 이제 켜보세요..

실습40: 주피터랩 평생 켜놓기

- 아래와 같이 하면 됩니다.

nohup jupyter lab --ip "0.0.0.0" --port {MY-PORT} --allow-root > /dev/null 2>&1 &

실습41: R+Python 사용가능한 개발환경 만들기

- 아래를 실행

conda create -n rpy 
conda activate rpy
conda install -c conda-forge r-essentials
conda install -c conda-forge plotly
conda install -c conda-forge rpy2

- 여기에서 conda install -c conda-forge r-essentials로 인하여 R, Python, Jupyter 가 모두 최신버전으로 설치된다.

- 또한 R에는 이미 tidyverse, IRkernel 등의 패키지가 기본으로 깔려있다.

- R이 설치된 경로를 찾아보자.

- 수틀리면 이 R을 지우면 된다.

- R이 설치될 수 있는 3가지 시나리오

sudo apt-get install r-base # r 공식홈페이지, 수틀리면 리눅스 포맷  
(base) conda install -c conda-forge ... # 수틀리면 아나콘다 삭제해야함. 
(rpy) conda install -c conda-forge ... # 수틀리면 가상환경 삭제 

실습42: 여러가지 프로그램, 여러가지 설치방법

- 우분투자체의 프로그램

  • 우분투 자체의 프로그램 예시: git, quarto, python, R, anaconda, vi, ssh, wget, vscode
  • 우분투 자체의 프로그램은 다시 모든 유저가 영향을 받는 받는 프로그램과 그렇지 않은 프로그램이 있음
  • 우분투 자체의 프로그램을 설치하는 방법들
sudo apt install git 
sudo apt-get install git 
sudo dpkg -i quarto-1.4.533-linux-amd64.deb 
bash Anaconda3-2019.03-Linux-x86_64.sh
sudo gdebi rstudio-server-1.2.5033-amd64.deb
# 기타 파일을 넣을 수 있는 모든 방법 (예를들면 압축파일 다운로드후 풀기) 

- 아나콘다(=base)에 종속된 프로그램

  • 아나콘다내에 종속된 프로그램의 예시: conda, python, R, jupyter
  • 아나콘다에 종속된 프로그램은 anaconda3 폴더안에 있음.

- 아나콘다환경에 종속시킬 수 “있는” 프로그램

  • 아나콘다내에 종속된 프로그램의 예시: python, R, jupyter
  • 아나콘다환경에 종속된 프로그램은 anaconda3/envs/py310 와 같은 형식의 폴더안에 있음.

- 파이썬에 종속된 프로그램 (=파이썬패키지=파이썬라이브러리=파이썬모듈)

  • 파이썬에 종속된 프로그램 예시: numpy, pandas
  • 얘네들이 어디에 깔리는지는 그때그때 다름
  • 지우는 방법도 그때그때 다르겠지? (젤 편하고 깔끔하게 지우려면?)

- R에 종속된 프로그램 (=R패키지=R라이브러리)

  • R에 종속된 프로그램의 예시: tidyverse
  • 얘들이 어디 깔리는지도 그때그때 다름
  • 지우는 방법도 그때그때 다르겠지? (젤 편하고 깔끔하게 지우려면?)

- 질문1: pip install vs conda install

  • 설치되는 레벨의 차이
  • 설치에서 느껴지는 편안함의 차이
  • 삭제할때 느껴지는 불편함의 차이
  • pip install pandas는 사실 install.packages("tidyverse")에 대응되는 것임

- 질문2: 언제 pip install을 쓰고 언제 conda install을 써야할까? 답은없어요. 저는 대충 아래와 같이 합니다. (해보고 수틀리면 그냥 환경날리세여)

  • 만만한 패키지는 pip install 로 설치: numpy, pandas
  • 까다로운 패키지는 conda install 로 설치: torch, autogluon

실습43: (base)에서 (rpy)에 있는 R 실행

- 원래는 불가능한 일이겠죠?

- 억지로 가능하게 하려면?

실습44: (rpy)에서 EPT라는 R패키지 설치하고 위치파악하기

- R을 실행

conda activate rpy
R

- 또다른 터미널을 열고 아래의 폴더로 이동 + 패키지확인

cd ~/anaconda3/envs/rpy/lib/R/library
ls

- EPT패키지 설치

install.packages("EPT")

- ~/anaconda3/envs/rpy/lib/R/library에서 확인

실습45: (rpy)에 설치된 R과 주피터 연결하기

- R을 실행

IRkernel::installspec()

- 주피터 실행